import Cookies from 'js-cookie'
import { api } from './api'

// 获取SESSDATA
export function getSessData() {
  const sessData = Cookies.get('SESSDATA')
  console.log('getSessData - 读取值:', sessData)
  return sessData
}

// 设置SESSDATA
export function setSessData(sessData) {
  console.log('setSessData - 原始值:', sessData)
  
  // 解码后再存储，避免双重编码
  const decodedSessData = decodeURIComponent(sessData)
  console.log('setSessData - 解码后的值:', decodedSessData)
  
  Cookies.set('SESSDATA', decodedSessData, { 
    expires: 30, 
    path: '/',
    sameSite: 'lax'
  })
  
  console.log('Cookie设置完成')
  
  // 立即验证读取
  const readBack = Cookies.get('SESSDATA')
  console.log('立即读取验证:', readBack)
  console.log('解码值是否一致:', decodedSessData === readBack)
}

// 清除SESSDATA
export function clearSessData() {
  Cookies.remove('SESSDATA', { path: '/' })
}

// 检查登录状态
export async function checkLoginStatus() {
  try {
    console.log('开始检查登录状态...')
    const sessData = getSessData()
    console.log('从Cookie获取到的sessdata:', sessData ? '有值' : '无值')
    
    if (!sessData) {
      console.log('没有sessdata，返回false')
      return false
    }
    
    console.log('调用后端验证登录状态...')
    const response = await api.get('/loginInfo')
    console.log('后端验证响应:', response.data)
    
    if (response.data.code === 0 && response.data.data.isLogin) {
      console.log('登录状态验证成功')
      return response.data.data
    }
    console.log('登录状态验证失败')
    return false
  } catch (error) {
    console.error('检查登录状态失败:', error)
    return false
  }
}

// 检查后端服务是否可用
export async function checkBackendAvailable() {
  try {
    const controller = new AbortController()
    const timeoutId = setTimeout(() => controller.abort(), 2000) // 2秒超时
    
    await api.get('/health', {
      signal: controller.signal
    })
    
    clearTimeout(timeoutId)
    return true
  } catch (error) {
    console.warn('后端服务不可用:', error.message)
    return false
  }
} 